home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr26 / blrmu13.zip / TSSC.ASM < prev    next >
Assembly Source File  |  1993-06-01  |  14KB  |  536 lines

  1. page ,132
  2. title tssc (test, set, save, colors) as of 08/30/90 - 12:15 am
  3. ;
  4. ;    included macro libraries
  5. ;    from /masminc
  6. ;
  7. if1
  8.          .xlist
  9.          include genmac.lib
  10.          include iomac.lib
  11.          include vdomac.lib
  12.          .list
  13. endif
  14. ;
  15. ;  common equates
  16. ;
  17. z        equ   0                       ; zero
  18. lf       equ   10                      ; line feed
  19. cr       equ   13                      ; carriage return
  20. ek       equ   27                      ; escape key
  21. ;
  22. ;-------------------------------------
  23. code     segment para public 'code'
  24. ;-------------------------------------
  25. ;
  26.          assume cs:code
  27. ;
  28.          org   256                    ; past PSP
  29. ;
  30. sop:     jmp   tssc                   ; start of program
  31. ;-----------------
  32. ;    work area
  33. ;-----------------
  34. ;
  35.          db    'start of work area'
  36. ;
  37. ofh      dw    z                       ; output file handle
  38. odn      db    z                       ; output drive #
  39. ofn      db    'tssc'                  ; save
  40.          db    '.'                     ; file
  41.          db    'com'                   ; name
  42.          db    z
  43. ;
  44. sm1      db    '┌────────────────────────────────────────┐',cr,lf,z
  45. sm2      db    '│        Test, Set, Save, Colors         │',cr,lf,z
  46. sm3      db    '├────────────────────────────────────────┤',cr,lf,z
  47. sm4      db    '│         ( by Bud Rasmussen )           │',cr,lf,z
  48. sm5      db    '├────────────────────────────────────────┤',cr,lf,z
  49. sm6      db    '│  QUIT at any time by pressing ESC key  │',cr,lf,z
  50. sm7      db    '└────────────────────────────────────────┘',cr,lf,lf,z
  51. ;
  52. ;    color save areas
  53. ;
  54. sbc      db    15                      ; save border color
  55. sbbc     db    3                       ; save border box color
  56. ssc      db    6                       ; save screen color
  57. srtc     db    14                      ; save requested text color
  58. cstc     db    06eh                    ; combined scrn / text color
  59. cbbc     db    03fh                    ; combined border box color
  60. ;
  61. rbcm     db    ' *  request border color from 0 to f :  ',z
  62. rsbcm    db    ' *  request screen box color from 0 to f :  ',z
  63. rsblcm   db    ' *  request screen box line color from 0 to f :  ',z
  64. rscm     db    ' *  request screen color from 0 to f :  ',z
  65. rtcm     db    ' *  request cursor color from 0 to f :  ',z
  66. rbgcm    db    ' *  request background text color 40 - 47 :  ',z
  67. rfgcm    db    ' *  request foreground text color 30 - 37 :  ',z
  68. ;
  69. cokm     db    ' *  is that all right ? ( y or n ) :  ',z
  70. ;
  71. tam      db    ' *  do you wish to test more ? ( y or n ) :  ',z
  72. ;
  73. satcm    db    ' *  do you wish to set these colors ? ( y or n ) :  ',z
  74. ;
  75. conm     db    ' *  do you wish to save these colors ? ( y or n ) :  ',z
  76. ;
  77. acm1     db    ' 0=blk, 1=blu, 2=grn, 3=cyan, 4=red,'
  78.          db    ' 5=mag, 6=brn, 7=wht, 8=lt blk,    ',z
  79. acm2     db    ' 9=lt blu, a=lt grn, b=lt cyan, c=lt red,'
  80.          db    ' d=lt mag, e=lt brn, f=lt wht ',z
  81. ;
  82. acm3     db    ' 40=blk, 41=red, 42=grn, 43=yelo, 44=blu,'
  83.          db    ' 45=mag, 46=cyan, 47=wht,     ',z
  84. acm4     db    ' 30=blk, 31=red, 32=grn, 33=yelo, 34=blu,'
  85.          db    ' 35=mag, 36=cyan, 37=wht      ',z
  86. ;
  87. ess      db    27,'['
  88. bcs      db    '43'                    ; background color store
  89.          db    ';'
  90.          db    '1'
  91.          db    ';'
  92. fcs      db    '33'                    ; foreground color store
  93.          db    'm$'
  94. ;
  95. rr       db    z                       ; reply area
  96. vcf      db    z                       ; validate color flag
  97. ef       db    z                       ; exit flag
  98. ;
  99. ;  miscellaneous constants
  100. ;
  101. cll      db    cr,lf,lf,z              ; cr, lf, lf
  102. crlf     db    cr,lf,z                 ; cr, lf
  103. ;
  104. ;     included data
  105. ;     from /masminc
  106. ;
  107.          .xlist
  108.          include ccwa.dta
  109.          include colors.dta
  110.          include escseq.dta
  111.          .list
  112.          .sall
  113. ;
  114.          db     'end of work area'
  115. ;
  116. tssc     proc  near
  117. ;
  118.          call  scaa                    ; save char and attr
  119. ;
  120. ;  main section
  121. ;
  122. ms:
  123. ;
  124.          mov   ef,0
  125. ;
  126. ;-----------------------------
  127. ;   request border color
  128. ;-----------------------------
  129. rbc:
  130.          call  sacm
  131.          call  lsccm
  132.          scp   12,0
  133.          call  mcr3
  134.          lea   ax,rbcm
  135.          call  lmts
  136.          call  vcp
  137.          cmp   vcf,1
  138.          je    rbcrtd
  139.          cmp   vcf,2
  140.          je    rbc
  141.          mov   sbc,al
  142.          jmp   stbc
  143. ;
  144. rbcrtd:  jmp   rtd
  145. ;
  146. ;-------------------------
  147. ;   set the border color
  148. ;-------------------------
  149. stbc:
  150.          mov   ah,11                   ; set color palette fct
  151.          mov   bh,0                    ; text mode
  152.          mov   bl,sbc                  ; border = ?
  153.          int   16
  154. ;------------------------------
  155. ;  border color OK ?
  156. ;------------------------------
  157.          call  sacm
  158.          scp   12,0
  159.          call  mcr3
  160.          lea   ax,cokm
  161.          call  lmts
  162.          mov   rr,32
  163.          dci   rr
  164.          cmp   rr,'y'
  165.          je    rsbbc
  166.          jmp   rbc
  167. ;
  168. ;------------------------------------
  169. ;   request screen border box color
  170. ;------------------------------------
  171. rsbbc:
  172.          call  sacm
  173.          call  lsccm
  174.          scp   12,0
  175.          call  mcr3
  176.          lea   ax,rsbcm
  177.          call  lmts
  178.          call  vcp
  179.          cmp   vcf,1
  180.          je    rbbcrtd
  181.          cmp   vcf,2
  182.          je    rsbbc
  183.          mov   sbbc,al
  184.          jmp   rbblc
  185. ;
  186. rbbcrtd: jmp   rtd
  187. ;
  188. ;-----------------------------------
  189. ;   request border box line color
  190. ;-----------------------------------
  191. rbblc:
  192.          scp   12,0
  193.          call  mcr3
  194.          lea   ax,rsblcm
  195.          call  lmts
  196.          call  vcp
  197.          cmp   vcf,1
  198.          je    rbbcrtd
  199.          cmp   vcf,2
  200.          je    rbblc
  201.          mov   srtc,al
  202.          jmp   sbacc
  203. ;
  204. ;----------------------------------
  205. ;   set box and crsr colors
  206. ;----------------------------------
  207. sbacc:
  208.          mov   al,sbbc
  209.          mov   cl,4
  210.          shl   al,cl
  211.          or    al,srtc
  212.          mov   cbbc,al
  213. ;
  214. ;------------------------------
  215. ;  border box color OK ?
  216. ;------------------------------
  217.          call  sacm
  218.          scp   12,0
  219.          call  mcr3
  220.          lea   ax,cokm
  221.          call  lmts
  222. ;
  223.          mov   rr,32
  224.          dci   rr
  225.          cmp   rr,'y'
  226.          je    rsc
  227.          jmp   rsbbc
  228. ;-----------------------------
  229. ;   request screen color
  230. ;-----------------------------
  231. rsc:
  232.          call  sacm
  233.          call  lsccm
  234.          scp   12,0
  235.          call  mcr3
  236.          lea   ax,rscm
  237.          call  lmts
  238.          call  vcp
  239.          cmp   vcf,1
  240.          je    rscrtd
  241.          cmp   vcf,2
  242.          je    rsc
  243.          mov   ssc,al
  244.          jmp   rcc
  245. ;
  246. rscrtd:  jmp   rtd
  247. ;
  248. ;-----------------------------
  249. ;   request cursor color
  250. ;-----------------------------
  251. rcc:
  252.          scp   12,0
  253.          call  mcr3
  254.          lea   ax,rtcm
  255.          call  lmts
  256.          call  vcp
  257.          cmp   vcf,1
  258.          je    rtcrtd
  259.          cmp   vcf,2
  260.          je    rcc
  261.          mov   srtc,al
  262.          jmp   ssacc
  263. ;
  264. rtcrtd:  jmp   rtd
  265. ;
  266. ;----------------------------------
  267. ;   set screen and crsr colors
  268. ;----------------------------------
  269. ssacc:
  270.          mov   al,ssc
  271.          mov   cl,4
  272.          shl   al,cl
  273.          or    al,srtc
  274.          mov   cstc,al
  275. ;
  276. ;------------------------------
  277. ;  set screen color OK
  278. ;------------------------------
  279. sscok:
  280.          call  sacm
  281.          scp   12,0
  282.          call  mcr3
  283.          lea   ax,cokm
  284.          call  lmts
  285. ;
  286.          mov   rr,32
  287.          dci   rr
  288.          cmp   rr,'y'
  289.          je    rbgc
  290.          jmp   rsc
  291. ;------------------------------------
  292. ;   request back ground color
  293. ;------------------------------------
  294. rbgc:
  295.          call  lbfcm
  296.          scp   12,0
  297.          call  mcr3
  298.          lea   ax,rbgcm
  299.          call  lmts
  300.          dci   bcs
  301.          dci   bcs+1
  302. ;----------------------------------
  303. ;   request fore ground color
  304. ;----------------------------------
  305. rfgc:
  306.          scp   12,0
  307.          call  mcr3
  308.          lea   ax,rfgcm
  309.          call  lmts
  310.          dci   fcs
  311.          dci   fcs+1
  312. ;
  313.          dsts  ess
  314. ;------------------------------
  315. ;  set text color ok
  316. ;------------------------------
  317. stcok:
  318.          call  sacm
  319.          scp   12,0
  320.          call  mcr3
  321.          lea   ax,cokm
  322.          call  lmts
  323. ;
  324.          mov   rr,32
  325.          dci   rr
  326.          cmp   rr,'y'
  327.          je    rtam
  328.          jmp   rbgc
  329. ;
  330. ;-----------------------
  331. ;  request try again msg
  332. ;-----------------------
  333. rtam:
  334.          scp   12,0
  335.          call  mcr3
  336.          lea   ax,tam
  337.          call  lmts
  338. ;
  339.          mov   rr,32
  340.          dci   rr
  341.          cmp   rr,'y'
  342.          jne   rtd
  343.          jmp   ms
  344. ;*---------------------
  345. ;*    return to dos
  346. ;*---------------------
  347. rtd:
  348. ;
  349.          cmp   vcf,1                   ; esc ?
  350.          jne   rtdn                    ; if not, carry on
  351.          mov   rr,32                   ; clear reply
  352.          jmp   fex                     ; exit
  353. rtdn:
  354.          scp   15,0
  355.          call  mcr3
  356.          lea   ax,satcm                ; save all these colors msg
  357.          call  lmts
  358. ;
  359.          mov   rr,32                   ; clear reply
  360.          dci   rr                      ; get reply
  361. ;
  362.          cmp   rr,'y'                  ; yes ?
  363.          je    ltca
  364. ;
  365.          sebc                          ; set eight back colors
  366. ;
  367.          call  rcaa                    ; reset char and attr
  368.          jmp   fex                     ; exit
  369. ;
  370. ltca:
  371. ;
  372.          call  sacm
  373. ;
  374.          scp   12,0
  375.          call  mcr3
  376.          lea   ax,conm                 ; clone or not msg
  377.          call  lmts
  378. ;
  379.          mov   rr,32                   ; clear reply
  380.          dci   rr                      ; get reply
  381. ;
  382.          cmp   rr,'y'                  ; yes ?
  383.          jne   fex                     ; if not, exit
  384. ;
  385.          lea   dx,ofn                  ; pass file name address
  386.          mov   cx,0                    ; set file attribute = normal
  387.          mov   ah,60                   ; pass code for creation open
  388.          dc                            ; DOS call
  389.          mov   ofh,ax                  ; save output file handle
  390. ;
  391.          lea   cx,eop                  ; point to end
  392.          lea   ax,sop                  ; point to start
  393.          sub   cx,ax                   ; end - start
  394.          mov   bx,ofh                  ; point to output file handle
  395.          lea   dx,sop                  ; set address
  396.          mov   ah,64                   ; pass DOS write a file code
  397.          dc                            ; DOS call
  398. ;
  399. ;  exit
  400. ;
  401. fex:
  402. ;
  403.          mov   ef,1
  404. ;
  405.          call  sacm
  406. ;
  407.          lea   ax,cll
  408.          call  lmts
  409.          call  mcr3
  410. ;
  411.          exit
  412. ;
  413. tssc     endp
  414. ;
  415. ;     set all color modes
  416. ;
  417. sacm     proc  near
  418.          scp   0,0
  419. ;        ssbc
  420.          scm   sbc
  421.          wcaa  cstc
  422.          mov   al,cbbc
  423.          mov   attr,al
  424.          call  pab
  425.          dsts  ess
  426.          cmp   ef,1
  427.          je    sacmx
  428. ;
  429. ;
  430. ;  send starting message
  431. ;
  432.          scp   3,0
  433.          call  mcr3
  434.          lea   ax,sm1
  435.          call  lmts
  436.          call  mcr3
  437.          lea   ax,sm2
  438.          call  lmts
  439.          call  mcr3
  440.          lea   ax,sm3
  441.          call  lmts
  442.          call  mcr3
  443.          lea   ax,sm4
  444.          call  lmts
  445.          call  mcr3
  446.          lea   ax,sm5
  447.          call  lmts
  448.          call  mcr3
  449.          lea   ax,sm6
  450.          call  lmts
  451.          call  mcr3
  452.          lea   ax,sm7
  453.          call  lmts
  454. ;
  455. sacmx:   ret
  456. ;
  457. sacm     endp
  458. ;
  459. ;--------------------------------
  460. ;  list screen cursor color msg
  461. ;--------------------------------
  462. lsccm    proc  near
  463.          scp   20,0
  464.          call  mcr3
  465.          lea   ax,acm1
  466.          call  lmts
  467.          scp   21,0
  468.          call  mcr3
  469.          lea   ax,acm2
  470.          call  lmts
  471.          ret
  472. lsccm    endp
  473. ;----------------------------------------
  474. ;  list background foreground color msg
  475. ;----------------------------------------
  476. lbfcm    proc  near
  477.          scp   20,0
  478.          call  mcr3
  479.          lea   ax,acm3
  480.          call  lmts
  481.          scp   21,0
  482.          call  mcr3
  483.          lea   ax,acm4
  484.          call  lmts
  485.          ret
  486. lbfcm    endp
  487. ;---------------------------------
  488. ;     validate colors procedure
  489. ;---------------------------------
  490. vcp      proc  near
  491.          mov   vcf,0
  492. ;
  493.          mov   rr,32
  494.          dci   rr
  495.          cmp   rr,ek                   ; reject ?
  496.          je    vcpr
  497.          cmp   rr,'0'
  498.          jb    vcpe                    ; if LT, error
  499.          cmp   rr,'f'
  500.          ja    vcpe                    ; if GT, error
  501.          mov   al,rr
  502.          call  cath
  503.          cmp   al,255
  504.          je    vcpe
  505. ;
  506. vcpx:    ret
  507. ;
  508. vcpe:    mov   vcf,2                   ; error
  509.          ret
  510. vcpr:    mov   vcf,1
  511.          ret
  512. vcp      endp
  513. ;
  514. ;    included procedures
  515. ;    from /masminc
  516. ;
  517.          .xlist
  518.          include cath.prc
  519.          include mcr3.prc
  520.          include lmts.prc
  521.          include pab.prc
  522.          include pac.prc
  523.          include par.prc
  524.          include rcaa.prc
  525.          include scaa.prc
  526.          .list
  527.          .xcref
  528. ;
  529.          db    ' end of program'
  530. ;
  531. eop:                                   ; end of program
  532. ;
  533. code     ends
  534. ;
  535.          end   sop
  536.